<?php
/**
 * Created by PhpStorm.
 * User: liyalong
 * Date: 2018/8/9
 * Time: 下午12:10
 */

namespace App\Services;


use Houdunwang\WeChat\WeChat;
use Modules\Wx\Entities\WeConfig;
use Modules\Wx\Entities\WxKeywords;
use Modules\Wx\Entities\WxRule;

class WechatService
{

    public function __construct()
    {
        //获取wechat.php配置文件的内容
        $config = include base_path('config') . '/wechat.php';
        //获取数据库中的微信配置数据
        $weconfig = WeConfig::pluck('value','name')->toArray();
        //将2个数组合并
        $config = array_merge($config,$weconfig);
        WeChat::config($config)->valid();
    }

    /**加载关键词模板
     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
     */
    public function ruleView($id = 0){
        //获取编辑时候的规则和关键词数据
        $rule = WxRule::findOrNew($id);
        //dd($rule);
       return view('wx::ruleview.rule',compact('rule'));
    }


    public function __call($name, $arguments)
    {
        return call_user_func_array([WeChat::class,$name],$arguments);
    }

    /**
     * 处理规则数据和关键词数据方法
     * @param int $id
     * @return mixed
     */
    public function saveRule($id = 0){
        //获取post 数据
        $post = json_decode(request()->input('rule'),true);
        //使用事务进行多表操作
        \DB::beginTransaction();
        //将规则数据存入规则表
        $rule = WxRule::findOrNew($id);
        $rule->name = $post['name'];
        $rule->module = \HDModule::currentModule();
        $rule->save();
        //循环post数据中的关键词数据，将数据存入关键词表
        //先将关键词表中的数据删除然后再添加
        WxKeywords::where('rule_id',$rule['id'])->delete();
        foreach ($post['keywords'] as $v){
            WxKeywords::create([
                'key'=>$v['key'],
                'rule_id'=>$rule['id'],
            ]);
        }
        \DB::commit();
        //处理完毕之后将规则数据返回
        return $rule;
    }

}